1.1 ios开发前准备
1.1 苹果公司介绍
重要事件
1976年创立
1976年推出Apple 1
1977年推出Apple 2
1980年推出Apple 3
1983年推出Apple Lisa
1984年推出Macintosh
1991年推出PowerBook,2006年被MacBook系列取代
1993年推出Apple Newton掌上电脑(已死)苹果电脑
1998年推出iMac
2005年推出Mac mini
2006年推出Mac Pro
2006年推出MacBook(已死)
2008年推出MacBook air苹果音乐播放器
2001年推出ipod
2004年推出iPod Mini
2005年推出iPod nano、iPod Shuffle
2007年推出iPod Classic、iPod Touch苹果手机产品
2007年推出iPhone
2008年推出iPhone 3G
2009年推出iPhone 3GS
2010年推出iPhone 4
2011年推出iPhone 4s
2012年推出iPhone 5
2013年推出iPhone 5s、iPhone 5c苹果公司平板电脑
2010年推出iPad
2011年推出iPad2
2012年推出iPad Mini苹果电视
2006年发布Apple TV
1.1.2 苹果Mac OX 操作系统介绍
历史版本
2001年从Macintosh电脑上分离出来成为OS X10.0
2001年推出OS X 10.1
2002年推出OS X 10.2、10.3
2005年推出OS X 10.4
2006年推出OS X 10.5
2008年推出OS X 10.6
2010年推出OS X 10.7(App Store)
2012年推出OS X 10.8
2013年推出OS X 10.9(后台程序省电优化、内存压缩技术)
2014年推出OS X 10.10OS X系统结构
1.1.3 苹果ios操作系统
历史版本
2007年发布iPhone Runs OS X
2008年改名为iPhone OS
2010年改名为ios,发布ios4(多任务)
2011年发布ios5
2012年发布ios6
2013年发布ios7(扁平化)
2014年发布ios8ios系统结构
1.1.4 软硬件开发环境要求
硬件环境
CPU双核
内存8G
最好选择Macbook Pro,也可以使用Macbook Air
测试手机iPhone 5+(发布)环境要求
OS X 10.9.3+
Xcode 6.0+
1.2 Xcode继承开发环境的安装使用与项目建立流程
1.2.1 xcode的下载和安装
说明:两种方式
- AppStore
- 开发者中心下载链接:https://developer.apple.com/xcode/downloads
1.2.2 xcode创建ios single view项目
1.2.3 工作空间创建和使用
1.2.4 xcode快捷键及常用功能
常用
快捷键 | 说明 |
---|---|
option + cmd + 向上箭头 | m/h文件切换 |
ctrl + a | 光标移动到行头 |
ctrl + e | 光标移动到行末 |
command + G | 查找下一个 |
command + w | 关闭一个文件 |
option + command + m | 窗口最小化 |
command + / | 注释 |
调试
快捷键 | 说明 |
---|---|
alt + command + y | degug 调试 |
alt + command + R | Run运行 |
alt + command + p | 到下一个断点 |
shift + cmd + o | 执行下一步(step over) |
shift + cmd + i | 执行进入函数(step into) |
shift + cmd + t | step out |
command + / | 取消断点 |
command + shift + F | 查找 |
command + enter | 等于bulid and debug |
移动
快捷键 | 说明 |
---|---|
control+F | 在同一行上将光标向右移动 |
control+B | 在同一行上将光标向左移动 |
control+P | 将光标移动到前一行 |
control+N | 将光标移动到后一行 |
control+A | 将光标移动到本行的行首 |
control+N | 将光标移动到本行的行尾 |
control+T | 将光标两边的字符对调 |
control+D | 删除光标右边的字符 |
control+k 删除光标所在行 光标后面的代码,便于你重写行尾代码 | |
control + L | 将光标插点置于窗口正中 |
缩进
- 第一种方法:选中需要缩进的代码,按住control键后单击光标,出现pop菜单,然后选择Re-indent selection。
- 第二种方法:选择需要调整的代码,同时按下
command+[ (左移动代码)
或command+](右移动代码)
。
1.2.5 xcode中创建os x命令行控制台项目
1.2.6 xcode中创建os x窗体程序项目
1.2.7 xcode中创建os x游戏项目
1.2.8 xcode中创建ios游戏项目
1.3 Xcode常用项目模版
说明:
5
种
- Master-Detail Application:
列表页-详情页
类型- Page-Based Application:
电子书
类型- Single View Application:
- Tabbed Application
- Game
1.3.1 Master-Detail Application
1.3.2 Page-Based Application
1.3.3 Tabbed Application
1.4 ios用户界面开发基本流程
1.4.1 StoryBoard的基本使用方法
说明:
Storybiard(故事版)
是Xcode4.2
才开始支持的,为了使设计View
更加容易。
- 可以在
Info.plist
文件中设置应用启动时首次加载的storyboard
- 一个应用中可以有多个
storyboard
storyboard
中指出了首先会被加载的view
- 查看视图控制器绑定的类
- 在多个视图之间建立动作关联
1.4.2 图片控件
说明:在
xcode
中图片控件的创建和使用
- 将本地的图片拖入到项目中
- 创建
Image View
1.4.3 ios UI界面设计中传统方法和Assistant editor绑定代码
说明:
程序
和控件
的绑定,有两种方式
方式1:ios UI界面设计中传统方法
说明:步骤如下
- 在
Controller
中定义@IBOutlet
修饰的引用控件的属性- 通过拖动建立
@IBOutlet
引用的控件和属性所在类文件之间的关联- 在
Controller
中通过@IBOutlet
属性使用控件
方式2:借助Assistant editor
绑定代码
说明:步骤如下
- 打开辅助窗口
- 拖线
- 设置关联
- connect
1.4.4 ios Story Board控制事件绑定
说明:步骤如下
- 编写
@IBAction
- 在
storyboard
中通过拖动在控件与controller
中相应的IBAction
之间建立关联
1 | import UIKit |
1.4.5 iOS Storyboard控件与Swift类绑定
说明:新添加的
Storyboard
控件默认并没有和自定义的类绑定,和自定义的类绑定就可以通过代码自定义该控件
- 设置绑定的类的类名
- 对应的自定义类中要实现父类的必要构造器(如果有的话)
1 | import UIKit |
1.4.6 ios源代码添加控件
1 | import UIKit |
1.4.7 ios浏览器开发制作
说明:需要解决
http
请求受限的问题
1.5 ios自定义控件实例
1.5.1 配置iOS自定义控件属性
说明:
Xcode
提供的所有控件都可以在Storyboard
中进行一系列的配置。
1.5.2 自定义原型进度指示控件实例
说明:使用绘图
API
编写自定义一个进度条控件
ProgressBar.swift
1 | import UIKit |
ViewController.swift
1 | import UIKit |
1.5.3 实时预览自定义控件效果
说明:
自定义控件
也可以使用Storyboard
设置。步骤如下
意义:开发人员通过代码开发的自定义控件
,也可以交给设计人员通过Storyboard
进行设计了
相关指令:用来和Storyboard
建立关联
指令 | 修饰目标 | 说明 |
---|---|---|
@IBDesignable |
class |
使被修饰的类可以通过Storyboard 设置 |
@IBInspectable |
属性 | 使被修饰的属性可以在Storyboard 中设置 |
- 在
Project
中创建新target
(自定义需要在单独的target
中才能被Storyboard
管理) - 在新创建的
target
中创建自定义控件的类(@IBDesignable
),类中可以设置一些可在Storyboard
设置的属性(@IBInspectable
)
MyView.swift
1 | import UIKit |
- 在
Storyboard
中添加一个View
(控件),并设置关联的类
1.6 使用StoryBoard做ios UI界面跳转
1.6.1 用iOS Storyboard做界面跳转
说明:跳转到下一个
view
并且能够返回
1.6.1.2 跳转到下一页
1.6.1.3 返回
说明:使用
IBAction
结合dismissViewControllerAnimated
方法,步骤如下
- 新建一个和第二个
view
关联的类(UIViewController
子类)- 结合
辅助窗口
在第二个view controller
做IBAction
并在响应方法中调用dismissViewControllerAnimated
ImgViewController.swift
1 | import UIKit |
1.6.2 使用nib文件做iOS界面设计
说明:
Xcode4
之后IB(Interface Builder)
和Xcode
才集成在一起。使用方式如下
创建
Cocoa class
时勾选Alse create XIB File
使用
presentModalViewController方法
从Storyboard
管理的view
跳转到nib
管理的view
注意:传统使用的是
nib
(而不是Storyboard
)进行界面设计的。nib
的操作方式和Storyboard
中单个view
类似。
ViewControllew.swift
1 | import UIKit |
MyViewController.swift
1 | import UIKit |
1.6.3 在iOS界面间传递数据
说明:本质上只是为和下一个
view
绑定的controller
设置一个属性。
扩展:也可以在后一个view
通过parentViewController
访问前一个view
ViewControllew.swift:设置信息
1 | import UIKit |
MyViewControllew.swift:展示信息
1 | import UIKit |
1.7 屏幕适配
变动:在
Xcode 7
中,Editor(menu)->Pin
消失了,该菜单项中原本有一些样式设计功能。
1.7.1 匹配父级容器
说明:就是让
目标容器
以他的父级容器
为参照系进行设置
扩展:控件UIImageVIew
可以设置其中图片的铺排模式
1.7.2 分割父级容器
说明:指的是多个兄弟
view
使用父级view
的方式。
扩展:Xcode 7
推出了一种新的方式stack view
,来进行布局管理,可以将多个view
作为一个组合进行操作。
技巧:stack view
可以取代之前需要Horizontal Space
(连个view
之间的水平间距)的场景
1.7.2.1 左边固定,右边自适应
约束:设置以下约束
- 两个
View
之间:Horizontal Spacing
- 左边
View
:leading
、top
- 右边
View
:tailing
、top
1.7.2.2 多个View
按比例
说明:2个或更多个
View
的宽度(或高度)按一定比例分割父级容器的剩余空间
1.7.3 复杂布局适配
说明:上部左右均分,下部占用剩余部分
底层
顶层
1.8 iOS平台常用传感器
CMMotionManager类
说明:管理传感器的类。
库:CoreMotion
1.8.1 iOS平台加速度传感器的使用方式
说明:可以获得三个方向上的加速度。
CMMotionManager相关实例成员 | 类型 | 说明 |
---|---|---|
accelerometerAvailable | Bool | 加速器是否可用 |
accelerometerUpdateInterval | NSTimeInterval | 每秒获取数据数(获取频率) |
startAccelerometerUpdatesToQueue | func | 启动加速器 |
stopAccelerometerUpdates | func | 停止加速器 |
注意:加速度传感器
启动
后,应当在适当的时候停掉
。
1 | import UIKit |
1.8.2 iOS平台陀螺仪的使用方式
CMMotionManager相关实例成员 | 类型 | 说明 |
---|---|---|
gyroAvailable | Bool | 陀螺仪是否可用 |
gyroUpdateInterval | NSTimeInterval | 每秒获取数据数(获取频率) |
startGyroUpdatesToQueue | func | 开始读区陀螺仪数据 |
stopGyroUpdates | func | 停止读取陀螺仪数据 |
1 | import UIKit |
1.8.3 iOS平台距离传感器的使用方式
说明:相关类
UIDevice
NSNotificationCenter
UIDeviceProximityStateDidChangeNotification
1 | import UIKit |
1.8.4 iOS平台电源传感器的使用方式
说明:相关类
UIDevice
NSNotificationCenter
UIDeviceProximityStateDidChangeNotification
1 | import UIKit |
1.8.5 iOS平台磁场传感器的使用方式
CLLocationManager类
相关实例成员 | 类型 | 说明 |
---|---|---|
delegate | Class(采纳CLLocationManagerDelegate协议) | 委托对象 |
startUpdatingHeading | func | 开始侦测方位数据 |
1 | import UIKit |
1.8.6 使用磁场传感器制作指南针实例
1.9 多点触控
1.9.1 触摸事件处理
说明:触摸事件分4种,分别对应四种方法(
ViewController
的成员方法)
方法 | 说明 |
---|---|
touchesBegin | 手指接触屏幕 |
touchesCancel | 系统事件打断了触摸事件时 |
touchesEnded | 手指离开屏幕 |
touchesMoved | 手指在屏幕上滑动 |
1 | import UIKit |
1.9.2 处理多个触摸点
技巧:可以在模拟器中模拟多点触控,方式是鼠标在模拟器上滑动式按住
alt(option)
键。
注意:程序默认不启动对多点触控的支持,需要在代码中设置开启多点触控。
1 | import UIKit |
1.9.3 缩放图片实例
ViewController.swift
1 | import UIKit |
1.10 常用其它功能
1.10.1 打开网页
说明:在
Safari
中打开指定连接
相关类:UIApplication
ViewController.swift
1 | import UIKit |
1.10.2 常用打开操作(发邮件、打电话、发短信)
说明:和打开网页类似,只是使用的
URL
协议不同
ViewController.swift
1 | import UIKit |
1.10.3 自定义打开协议
说明:可以通过自定一些
URL
协议
案例:通过自定义的URL
协议ime
打开另一个App
1.10.3.1 注册协议的app
在
Info.list
中设置一个URL Schemes
创建要被协议打开的
View
(带有xib
)
LabelViewController.swift
1 | import UIKit |
LabelViewController.xib
AppDelegate.swift
:实现通过URL打开该App
的构造函数
1 | import UIKit |
1.10.3.2 通过协议打开app
viewcontroller.swift
1 | import UIKit |
1.10.4 获取photo
ViewController.swift
1 |